#!/usr/local/bin/python3
# -*- coding: utf-8 -*-

"""
@File    : CustomJSONEncoder.py
@Author  : lepal
@Time    : 2024-08-20 17:58
"""
from datetime import date

from app.libs.error_code import ServerError


# 自定义序列化类，让视图返回的模型对象也能转换成字典格式，然后通过把字典通过jsonify转换成json格式返回到前端
# 注意这里的o的属性只能拿到实例属性，类属性拿不到
def default_json_provider(o):
    if hasattr(o, 'keys') and hasattr(o, '__getitem__'): # 如果o有keys属性和__getitem__属性，就可以把o转成字典，不然转的时候会报错
        return dict(o)
    if isinstance(o, date):
        return o.strftime('%Y-%m-%d')
    raise ServerError()